package com.ibeeking.found.upms.b.rest.service;

import com.ibeeking.found.common.entity.CurrentUser;
import com.ibeeking.found.upms.api.common.param.PermissionParam;
import com.ibeeking.found.upms.service.common.bo.TenantPermissionBO;
import com.ibeeking.found.upms.service.common.bo.TenantUserFavorityBO;
import com.ibeeking.found.upms.service.common.param.UserPermissionParam;
import com.ibeeking.found.upms.service.common.vo.CurrentPermissionVO;

import java.util.List;

/**
 * @ClassName ITenantPermissionService
 * @Description 权限接口
 * @Author ibeeking
 * @Date 2021-01-04 15:39
 **/
public interface ITenantPermissionService {

    /**
     * 查询当前用户有效权限列表
     *
     * @param currentUser
     * @param jti
     * @return
     */
    List<CurrentPermissionVO> queryEffectiveList(CurrentUser currentUser, String jti);
    /**
     * 查询当前用户收藏夹权限列表
     *
     * @param userId
     * @return
     */
    List<TenantUserFavorityBO> queryUserPermissionFavorityByUserId(Long userId);
    /**
     * 查询当前用户收藏夹权限列表
     *
     * @param currentUser
     * @return
     */
    List<TenantPermissionBO> queryUserPermissionFavorityList(CurrentUser currentUser);
    /**
     * 增加当前用户收藏夹权限
     *
     * @param currentUser
     * @return
     */
    Boolean addAndUpdateUserPermissionFavority(CurrentUser currentUser,  UserPermissionParam param);

    /**
     * 查询所有
     *
     * @return
     */
    List<TenantPermissionBO> queryAll();

    List<CurrentPermissionVO> menus(String module);

    /**
     * 配置
     * @param params
     * @return
     */
    Boolean configurePermission(List<PermissionParam> params);

    List<Long> queryAllByModule(String module);
}
